﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.GamerServices;
using Arcadium.GameEntities.Projectiles;
using Microsoft.Xna.Framework.Net;

namespace Arcadium.GameEntities.Weapons
{
    abstract class Weapon : GameEntity
    {
        #region Field

        // Character, used to get position for character-relative drawing.
        protected Character character;

        #endregion

        #region Properties

        // Static TODO: Really? What if we want to make custom handguns with firepower * 10000000?

        public abstract Texture2D Texture { get; }

        public abstract Vector2 TextureOrigin { get; }

        public abstract float FirePower { get; }

        public abstract TimeSpan FiringRate { get; }

        #endregion

        #region Initialization

        public Weapon(World world, Character character)
            : base(world)
        {
            this.character = character;
        }

        #endregion

        #region Public Methods

        public abstract void Shoot(NetworkGamer gamer, Vector2 position, int direction);

        #endregion
    }
}
